home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar 2006 February
/
Gamestar_81_2006-02_dvd.iso
/
Red Shark
/
Missions
/
Mission_10
/
MissionTasks.script
< prev
next >
Wrap
Text File
|
2001-11-20
|
15KB
|
559 lines
//-------------------------------------------------------------------
//
// This code is copyright 2001 by G5 Software.
// Any unauthorized usage, either in part or in whole of this code
// is strictly prohibited. Violators WILL be prosecuted to the
// maximum extent allowed by law.
//
//-------------------------------------------------------------------
///////////////////////////////////
//
// Mission 10 -- Intercept Convoy
//
///////////////////////////////////
class CMission10_AIController extends CBaseAIController
{
array ActivatePointCenterList = array(
vector( 3405, 2510, 0), // First Base A
vector( 3120, 4670, 0), // B
vector( 6040, 5875, 0), // C
vector( 3435, 7350, 0), // D
vector( 6590, 9280, 0), // E
vector( 2995, 9825, 0), // F
vector( 3410, 12645, 0), // G
vector( 3390, 13365, 0), // H
vector( 8185, 4480, 0), // I
vector( 9030, 3925, 0)); // J
array ActivatePointRadiusList = array(
50.0, // radius of "ring is broken"
50.0,
50.0,
50.0,
50.0,
50.0,
50.0,
50.0,
50.0,
50.0);
array ActivatePointNameList = array(
"",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J"
);
void OnObjectEnterArea( int _AreaIndex, string _NavPointName, string _ObjectID)
{
if ( _AreaIndex == 7
&& Core_IsStringStartsWith( _ObjectID, "10_NaziConv_A"))
{
Core_BroadcastEvent("OnConvoyAStop");
// Core_LogMessage("Camera shows: Convoy A in AreaIndex 7");
// Core_SendEventTo(
// "Helicopter",
// "ShowEventPoint",
// vector(3390, 13365, 0), // - point to show
// 80.0 // - distance from camera to point
// );
};
if ( _AreaIndex == 9
&& Core_IsStringStartsWith( _ObjectID, "10_NaziConv_B"))
{
Core_BroadcastEvent("OnConvoyBStop");
// Core_LogMessage("Camera shows: Convoy B in AreaIndex 9");
// Core_SendEventTo(
// "Helicopter",
// "ShowEventPoint",
// vector(9030, 3925, 0), // - point to show
// 80.0 // - distance from camera to point
// );
}
}
}
class C10_NaziConv_A extends CNavPointUser, CBaseAITask_BaseTask
{
//
// convoy parameters
vector DestinationPoint;// = vector( 3390, 13365, 0);//vector( 3390, 13365, 0); // where to go
float CruiserSpeed = 30; // autocade with guard should keep this speed
float RunSpeed = 30; // autocade wo guards should keep this speed
float OvertakeSpeed = 34; // maximum allowed speed for overtake
float AutocadDistanceMin = 20; // nearest allowed distance in autocade
float AutocadDistanceOptimum = 25; // try to keep this distance in autocade
float AutocadDistanceOvertake = 40; // overtake distance
string CurLeader = "";
boolean IsLeader = false;
//
// current state
boolean Moving = false; // true when object is moving to destination
boolean Ambushed = false; // true when object is under ambush
boolean Retreat = false; // true when object is retreating
boolean Run = false; // true when object is running without stop to destination
int StartTime = 0;
int TimeContinuous = 5000;
boolean MovingStatus = false;
void OnConvoyAStop()
{
// SetOrder_StopNow();
// Core_BroadcastEvent(
// "OnDisplayMessage",
// "Mission Failed. Convoy reach the Nordgeimer base",
// StructureDestroyedColor
// );
// Core_BroadcastEvent("NeedToQuit");
}
void ClearState()
{
Moving = false;
Ambushed = false;
Retreat = false;
Run = false;
CurLeader = "";
IsLeader = false;
}
//
// start up initialization
void Init()
{
DestinationPoint = vector( 3390, 13365, 0);
StartTime = GetGameTime();
// give start order
//GiveOrder_MoveToTarget();
}
void OnUpdate()
{
if ( (StartTime != 0) && ( (GetGameTime() - StartTime) > TimeContinuous ) && ( !MovingStatus ) )
{
GiveOrder_MoveToTarget();
Core_BroadcastEvent("OnConvoyAStart");
// Core_LogMessage("Camera shows: Convoy A after moving start. Unit 02");
// Core_SendEventTo(
// "Helicopter",
// "ShowEventObject",
// "10_NaziConv_A_02", // - id of object to show
// 70.0 // - distance from camera to object
// );
MovingStatus = true;
}
}
//
// orders
void GiveOrder_MoveToTarget()
{
//Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
string Leader = GetCommander("ConvA_Rank"); // find leader that we should followed by
if ( Moving == true
&& Leader == CurLeader)
{
// nothing changed
return;
}
// set state
ClearState();
Moving = true;
CurLeader = Leader;
if ( Leader == "")
{
// we are leader. go directly to destination
SetOrder_MoveTo(
DestinationPoint,
CruiserSpeed);
}
else
{
// leader found. follow him
SetOrder_Follow(
Leader, // follow leader
AutocadDistanceMin,
AutocadDistanceOptimum,
AutocadDistanceOvertake,
CruiserSpeed,
OvertakeSpeed);
};
}
void OnLeaderLost( string _LeaderID)
{
// reorder
GiveOrder_MoveToTarget();
}
};
class C10_NaziConv_B extends CNavPointUser, CBaseAITask_BaseTask
{
//
// convoy parameters
vector DestinationPoint;// = vector( 9030, 3925, 0);//vector( 9030, 3925, 0); // where to go
float CruiserSpeed = 30; // autocade with guard should keep this speed
float RunSpeed = 30; // autocade wo guards should keep this speed
float OvertakeSpeed = 34; // maximum allowed speed for overtake
float AutocadDistanceMin = 20; // nearest allowed distance in autocade
float AutocadDistanceOptimum = 25; // try to keep this distance in autocade
float AutocadDistanceOvertake = 40; // overtake distance
string CurLeader = "";
boolean IsLeader = false;
//
// current state
boolean Moving = false; // true when object is moving to destination
boolean Ambushed = false; // true when object is under ambush
boolean Retreat = false; // true when object is retreating
boolean Run = false; // true when object is running without stop to destination
int StartTime = 0;
int TimeContinuous = 10000;
boolean MovingStatus = false;
void OnConvoyBStop()
{
SetOrder_StopNow();
// Core_BroadcastEvent(
// "OnDisplayMessage",
// "Mission Failed. Convoy reach the Titovo village",
// StructureDestroyedColor
// );
// Core_BroadcastEvent("NeedToQuit");
}
void ClearState()
{
Moving = false;
Ambushed = false;
Retreat = false;
Run = false;
CurLeader = "";
IsLeader = false;
}
//
// start up initialization
void Init()
{
DestinationPoint = vector( 9030, 3925, 0);
StartTime = GetGameTime();
// give start order
// GiveOrder_MoveToTarget();
}
void OnUpdate()
{
if ( (StartTime != 0) && ( (GetGameTime() - StartTime) > TimeContinuous ) && ( !MovingStatus ) )
{
GiveOrder_MoveToTarget();
MovingStatus = true;
Core_BroadcastEvent("OnConvoyBStart");
// Core_LogMessage("Camera shows: Convoy B after moving start. Unit 02");
// Core_SendEventTo(
// "Helicopter",
// "ShowEventObject",
// "10_NaziConv_B_02", // - id of object to show
// 70.0 // - distance from camera to object
// );
}
}
//
// orders
void GiveOrder_MoveToTarget()
{
//Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
string Leader = GetCommander("ConvB_Rank"); // find leader that we should followed by
if ( Moving == true
&& Leader == CurLeader)
{
// nothing changed
return;
}
// set state
ClearState();
Moving = true;
CurLeader = Leader;
if ( Leader == "")
{
// we are leader. go directly to destination
SetOrder_MoveTo(
DestinationPoint,
CruiserSpeed);
}
else
{
// leader found. follow him
SetOrder_Follow(
Leader, // follow leader
AutocadDistanceMin,
AutocadDistanceOptimum,
AutocadDistanceOvertake,
CruiserSpeed,
OvertakeSpeed);
};
}
void OnLeaderLost( string _LeaderID)
{
// reorder
GiveOrder_MoveToTarget();
}
}
///======================================================================
class C10_NaziCross extends CBaseAITask_BaseTask
{
void OnEnemyTargeted()
{
// StartTime = GetGameTime();
Core_BroadcastEvent( "WarningDetected" );
}
void Unit_Destroyed( string ObjectID )
{
if ( Core_IsStringStartsWith( ObjectID, GetUnitPrefix() ))
{
Core_BroadcastEvent( "CrossroadAttacked" );
}
}
}
///--------------------------------------------
class C10_NaziCross_A extends C10_NaziCross
{
string GetUnitPrefix()
{
return "10_NaziCross_A";
}
}
//---------------------------------------------
class C10_NaziCross_B extends C10_NaziCross
{
string GetUnitPrefix()
{
return "10_NaziCross_B";
}
}
//---------------------------------------------
class C10_NaziCross_C extends C10_NaziCross
{
string GetUnitPrefix()
{
return "10_NaziCross_C";
}
}
///=======================================================================
class C10_NaziSinglePatrol extends CNavPointUser, CBaseAITask_BaseTask
{
//
// convoy parameters
vector DestinationPoint = vector( 7300, 4445, 0); // where to go
float CruiserSpeed = 27; // autocade with guard should keep this speed
float RunSpeed = 28; // autocade wo guards should keep this speed
float OvertakeSpeed = 30; // maximum allowed speed for overtake
float AutocadDistanceMin = 20; // nearest allowed distance in autocade
float AutocadDistanceOptimum = 25; // try to keep this distance in autocade
float AutocadDistanceOvertake = 35; // overtake distance
string CurLeader = "";
boolean IsLeader = false;
//
// current state
boolean Moving = false; // true when object is moving to destination
boolean Run = false; // true when object is running without stop to destination
// int StartTime = 0;
// int TimeContinuous = 2000;
// boolean MovingStatus = false;
void ClearState()
{
Moving = false;
Run = false;
CurLeader = "";
IsLeader = false;
}
//
// start up initialization
void Init()
{
DestinationPoint = vector( 7300, 4445, 0);
// give start order
GiveOrder_MoveToTarget();
}
//
// orders
void GiveOrder_MoveToTarget()
{
//Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
string Leader = GetCommander(GetGroupName()); // find leader that we should followed by
if ( Moving == true
&& Leader == CurLeader)
{
// nothing changed
return;
}
// set state
ClearState();
Moving = true;
CurLeader = Leader;
if ( Leader == "")
{
// we are leader. go directly to destination
SetOrder_MoveTo(
DestinationPoint,
CruiserSpeed);
}
else
{
// leader found. follow him
SetOrder_Follow(
Leader, // follow leader
AutocadDistanceMin,
AutocadDistanceOptimum,
AutocadDistanceOvertake,
CruiserSpeed,
OvertakeSpeed);
};
}
void OnLeaderLost( string _LeaderID)
{
// reorder
GiveOrder_MoveToTarget();
}
}
///------------------------------------------------------------------------------------
class C10_NaziPatrol_A extends C10_NaziSinglePatrol
{
string GetGroupName()
{
return "Rank_PatrolA";
}
void Init()
{
DestinationPoint = vector( 7300, 5445, 0);
// give start order
GiveOrder_MoveToTarget();
}
}
///-----------------------------------------------------------------------------------------------
class C10_CrossA_Patrol extends C10_NaziSinglePatrol
{
string GetGroupName()
{
return "Rank_PatrolCrossA";
}
void Init()
{
DestinationPoint = vector( 6035, 5870, 0);
// give start order
GiveOrder_MoveToTarget();
}
}
///---------------------------------------------------------------------------------------------
class C10_SharkPatrol extends C10_NaziSinglePatrol
{
string GetGroupName()
{
return "Rank_SharkPatrol";
}
void Init()
{
DestinationPoint = vector( 7130, 7553, 0);
// give start order
GiveOrder_MoveToTarget();
}
}
/// ==========================================================================================
class C10_Patrol_Tit_CrossA extends CNavPointUser, CBaseAITask_Patrol
{
array GetPatrolTrip()
{
return array (vector(8185,4480,0),
vector(6040,5875,0));
}
float GetTripSpeed()
{
return 20;
}
}
///-------------------------------------------------------------------------------------------
class C10_Patrol_CrossA_CrossB extends CNavPointUser, CBaseAITask_Patrol
{
array GetPatrolTrip()
{
return array (vector(3435,7350,0),
vector(6045,5875,0));
}
float GetTripSpeed()
{
return 20;
}
}
/// ------------------------------------------------------------------------------------------
class C10_Patrol_CrossB_CrossC extends CNavPointUser, CBaseAITask_Patrol
{
array GetPatrolTrip()
{
return array (vector(3435,7355,0),
vector(6590,9280,0));
}
float GetTripSpeed()
{
return 20;
}
}
// =================================================
class C10_NaziTitovo extends CNavPointUser, CBaseAITask_BaseTask, CBaseAITask_Patrol
{
}